// Liste des jeux de diapositives d'un cours (séances, titres, nombre de diapos). import { NextResponse } from "next/server"; import { apiError, requireEnrollment } from "@/lib/api.ts"; import { requireUser } from "@/lib/auth/session.ts"; import { all } from "@/lib/db/index.ts"; import { normalizeCourse } from "@/lib/learning/helpers.ts"; export async function GET(_req: Request, ctx: { params: Promise<{ course: string }> }) { try { const user = await requireUser(); const course = normalizeCourse((await ctx.params).course); requireEnrollment(user.id, course); const decks = all<{ week: number; title: string; slides: number; sections: number }>( `SELECT d.week, d.title, COUNT(c.id) as slides, COUNT(DISTINCT NULLIF(c.section_title, '')) as sections FROM documents d JOIN chunks c ON c.document_id = d.id WHERE d.course_code = ? AND d.doc_type = 'slides' AND d.visible_to_students = 1 GROUP BY d.id ORDER BY d.week`, course ); return NextResponse.json({ decks }); } catch (e) { return apiError(e); } }